#!/usr/bin/env python
"""环境配置设置脚本"""

import os
import secrets
import string
from pathlib import Path

def generate_secret_key(length=32):
    """生成安全的密钥"""
    alphabet = string.ascii_letters + string.digits + string.punctuation
    return ''.join(secrets.choice(alphabet) for _ in range(length))

def setup_env_file():
    """设置.env文件"""
    current_dir = Path(__file__).parent
    env_file = current_dir / ".env"
    template_file = current_dir / "env.template"
    
    print("🔧 设置环境配置文件...")
    
    if env_file.exists():
        choice = input("⚠️  .env文件已存在，是否覆盖？(y/N): ")
        if choice.lower() != 'y':
            print("❌ 取消操作")
            return
    
    if not template_file.exists():
        print("❌ 找不到env.template模板文件")
        return
    
    # 读取模板
    with open(template_file, 'r', encoding='utf-8') as f:
        template_content = f.read()
    
    # 生成新的SECRET_KEY
    new_secret_key = generate_secret_key(64)
    
    # 替换占位符
    env_content = template_content.replace(
        'your-super-secret-key-please-change-this-in-production-environment',
        new_secret_key
    )
    
    # 写入.env文件
    with open(env_file, 'w', encoding='utf-8') as f:
        f.write(env_content)
    
    print("✅ .env文件创建成功！")
    print(f"🔑 自动生成了安全的SECRET_KEY")
    
    # 提供配置指导
    print("\n📝 配置指导：")
    print("1. 如需使用检测平台，请在.env文件中配置相应的API密钥：")
    print("   - ZHIWANG_API_KEY: 知网API密钥")
    print("   - GEZIDA_API_KEY: 格子达API密钥") 
    print("   - WEIPU_API_KEY: 维普API密钥")
    print("\n2. 如需数据库支持，请配置：")
    print("   - DATABASE_URL: PostgreSQL连接字符串")
    print("   - REDIS_URL: Redis连接字符串")
    print("\n3. 生产环境请设置：")
    print("   - DEBUG=False")
    print("   - 配置具体的ALLOWED_HOSTS和ALLOWED_ORIGINS")
    
    print(f"\n📁 配置文件位置: {env_file}")

def main():
    """主函数"""
    try:
        setup_env_file()
        print("\n🚀 现在可以运行项目了：")
        print("   python run.py")
        print("   # 或")  
        print("   uvicorn app.main:app --reload")
    except Exception as e:
        print(f"❌ 设置失败: {e}")

if __name__ == "__main__":
    main() 